package com.ftg.learn.pattern.singleton;

/**
 * 单例设计模式 的线程安全饱汉模式
 * @author kangjx
 * @createTime 2022/8/9
 */
public class Sinleton3 {

    private static Sinleton3 s;

    private Sinleton3(){
        System.out.println("构造方法 ");
    }

    //a b c
    public  static Sinleton3 getInstance(){
        if(s == null){
            synchronized(Sinleton3.class){
                s = new Sinleton3();
            }

        }
//        volatile
//        1 可见性...[主内在发生变量 以后通知工作内在同步主内存的变化]
//        2 禁止指令重排...
//        cpu 100 [high speed] > memory 100 > disk 1
//        内存优化问题 指令重排   123
//        3 操作disk
//        1 操作cpu
//        2 操作操作
//       不让cpu进行指令重排   不做优化
        return s;
    }

}
